package lv.servidordisqueria.server;

import lv.mensajeriadisqueria.idomain.IInstrumento;
import lv.mensajeriadisqueria.idomain.IMusico;
import lv.mensajeriadisqueria.idomain.IRol;
import lv.mensajeriadisqueria.idomain.ITema;
import lv.mensajeriadisqueria.idomain.IUsuario;
import lv.mensajeriadisqueria.mensaje.Mensaje;
import lv.servidordisqueria.server.accion.InstrumentoAccion;
import lv.servidordisqueria.server.accion.MusicoAccion;
import lv.servidordisqueria.server.accion.RolAccion;
import lv.servidordisqueria.server.accion.TemaAccion;
import lv.servidordisqueria.server.accion.UsuarioAccion;

/**
 * La clase accion actua dependiendo de que tipo de dato viaje en el mensaje
 * devolviendo un valor determinado en un nuevo mensaje 
 */
public class Accion {

	public static Mensaje actuar(Mensaje mensaje) {
		if (mensaje.getObjeto() instanceof IUsuario) {
			return UsuarioAccion.actuar(mensaje);
		} else if (mensaje.getObjeto() instanceof ITema) {
			return TemaAccion.actuar(mensaje);
		} else if (mensaje.getObjeto() instanceof IRol) {
			return RolAccion.actuar(mensaje);
		} else if (mensaje.getObjeto() instanceof IMusico) {
			return new MusicoAccion().actuar(mensaje);
		} else if (mensaje.getObjeto() instanceof IInstrumento) {
			return new InstrumentoAccion().actuar(mensaje);
		}
		return null;
	}
}
